package com.lh.jianzhioffer.专项练习.数组;

import java.util.Arrays;

/**
 * @author: linghao
 * @since: 2023/2/21
 * 给你一个整数数组 nums ，请计算数组的 中心下标
 *
 * 题解：
 * 记数组的全部元素之和为 total
 * 当遍历到第 i 个元素时，设其左侧元素之和为 sum,则其右侧元素之和为 total−nums[i] −sum
 *
 * 左右侧元素相等即为sum=total−nums[i] −sum，即 2×sum+nums[i]=total
 */
public class 左右两边子数组的和相等012 {


    //前缀和
    public int pivotIndex(int[] nums) {
        int total = Arrays.stream(nums).sum();
        int sum = 0;
        for(int i=0;i<nums.length;i++){
            if(2*sum + nums[i] == total){
                return i;
            }
            sum += nums[i];
        }
        return -1;
    }
}
